使用Gson将数据保存到JSON文件 您所在的位置:网站首页 gson 数组转json 使用Gson将数据保存到JSON文件

使用Gson将数据保存到JSON文件

2024-04-18 06:32| 来源: 网络整理| 查看: 265

1.概述

Gson是一个Java库,允许我们将Java对象转换为JSON表示形式。我们还可以反过来使用它,将JSON字符串转换为等效的Java对象。

在本快速教程中,我们将找到如何将各种Java数据类型作为JSON保存在文件中。

2. Maven依赖

首先,我们需要在pom.xml中添加Gson依赖项。这在Maven Central中可用:

12345     com.google.code.gson     gson     2.8.5

3.将数据保存到JSON文件

我们将使用Gson类中的toJson(Object src,Appendable writer)方法将Java数据类型转换为JSON并将其存储在文件中。 Gson()构造函数使用默认配置创建一个Gson对象:

1Gson gson = new Gson();

现在,我们可以调用toJson()来转换和存储Java对象。

让我们探索一些Java中具有不同数据类型的示例。

3.1。原语

使用GSON将原语保存到JSON文件非常简单:

1gson.toJson(123.45, new FileWriter(filePath));

在此,filePath表示文件的位置。文件输出将仅包含原始值:

1123.45

3.2。自定义对象

同样,我们可以将对象存储为JSON。

首先,我们将创建一个简单的User类:

123456789101112131415public class User {     private int id;     private String name;     private transient String nationality;     public User(int id, String name, String nationality) {         this.id = id;         this.name = name;         this.nationality = nationality;     }         public User(int id, String name) {         this(id, name, null);     } }

现在,我们将User对象存储为JSON:

12User user = new User(1,"Tom Smith","American"); gson.toJson(user, new FileWriter(filePath));

文件输出将是:

1{"id":1,"name":"Tom"}

如果将字段标记为瞬态,则默认情况下将忽略该字段,并且不将其包含在JSON序列化或反序列化中。结果,JSON输出中不存在国籍字段。

同样,默认情况下,Gson在序列化过程中会忽略空字段。因此,如果我们考虑以下示例:

1gson.toJson(new User(1, null,"Unknown"), new FileWriter(filePath));

文件输出将是:

1{"id":1}

稍后我们将看到如何在序列化中包括空字段。

3.3。馆藏

我们可以用类似的方式存储对象的集合:

12User[] users = new User[] { new User(1,"Mike"), new User(2,"Tom") }; gson.toJson(users, new FileWriter(filePath));

在这种情况下,文件输出将是一个User对象数组:

1[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]

4.使用GsonBuilder

为了调整默认的Gson配置设置,我们可以利用GsonBuilder类。

此类遵循构建器模式,通常通过首先调用各种配置方法来设置所需的选项,最后调用create()方法来使用该类:

123Gson gson = new GsonBuilder()   .setPrettyPrinting()   .create();

在这里,我们将设置漂亮的打印选项,默认情况下将其设置为false。同样,要在序列化中包含空值,我们可以调用erialializeNulls()。可用选项在此处列出。

5.结论

在这篇快速文章中,我们了解了如何将各种Java数据类型序列化为JSON文件。要浏览有关JSON的各种文章,请参阅本主题的其他教程。

与往常一样,该代码段在此GitHub存储库中可用。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有